// pages/reportmanage/dispatch.js
Page({

  /**
   * 页面的初始数据
   */
  data: {
    // 所有原始数据
    departmentData: [],
    // 用于picker显示的二维数组
    pickerArray: [[], []],
    // 当前选中的列下标
    pickerIndex: [0, 0],
    // 最终选择的部门和人员名称，用于页面显示
    selectedDept: '',
    selectedUser: '',

    //report
    report: {},
    imgList: []


  },

  /**
   * 生命周期函数--监听页面加载
   */
  onLoad(options) {
    let that = this
    const eventChannel = this.getOpenerEventChannel()
    // 监听acceptDataFromOpenerPage事件，获取上一页面通过eventChannel传送到当前页面的数据
    eventChannel.on('row', function (data) {
      that.setData({
        report: data,
        imgList: data.fliePath.split(';')

      })

    })
    // 初始化或从服务器获取数据
    this.initData();

  },

  //浏览图片
  ViewImage(e) {
    wx.previewImage({
      urls: this.data.imgList,
      current: e.currentTarget.dataset.url
    });
  },
  checkPhone(event) {
    let row = event.currentTarget.dataset.data;
    wx.makePhoneCall({
      phoneNumber: row,
      success: function (res) {
        console.log(res)
      },
      fail: function (err) {
        console.log(err)
      }
    })
  },


  // 初始化模拟数据
  initData() {
    // 模拟部门及人员数据。关键：每个人员需要关联其部门ID。
    const departmentData = [
      { id: 1, name: '技术部' },
      { id: 2, name: '市场部' },
      { id: 3, name: '人事部' }
    ];
    const userData = [
      { id: 101, name: '张三', deptId: 1 },
      { id: 102, name: '李四', deptId: 1 },
      { id: 103, name: '王五', deptId: 2 },
      { id: 104, name: '赵六', deptId: 2 },
      { id: 105, name: '钱七', deptId: 3 }
    ];

    // 初始化pickerArray：第一列为部门，第二列为第一个部门对应的人员
    const firstDeptUsers = userData.filter(user => user.deptId === departmentData[0].id);
    console.log(firstDeptUsers)
    this.setData({
      departmentData,
      userData,
      pickerArray: [
        departmentData,
        firstDeptUsers
      ],
      selectedDept: departmentData[0].name,
      selectedUser: firstDeptUsers[0]?.name || ''
    });
  },

  // 某一列滚动选项变化时触发 - 实现联动的关键
  onPickerColumnChange(e) {
    const { column, value } = e.detail; // column: 改变的列索引, value: 改变后该列选中项索引
    const newPickerIndex = [...this.data.pickerIndex]; // 复制当前选中下标数组
    newPickerIndex[column] = value; // 更新改变列的新下标

    // 如果滚动的是第一列（部门列），则需要更新第二列（人员列）的数据
    if (column === 0) {
      const selectedDeptId = this.data.departmentData[value].id;
      const correspondingUsers = this.data.userData.filter(user => user.deptId === selectedDeptId);

      // 更新第二列的数据和选中下标
      this.setData({
        pickerArray: [this.data.pickerArray[0], correspondingUsers],
        'pickerIndex[1]': 0 // 部门变化后，人员列重置到第一个
      });
      // 更新newPickerIndex中人员列的下标，因为pickerIndex数组即将被整体更新
      newPickerIndex[1] = 0;
    }

    // 更新选中下标数组
    this.setData({
      pickerIndex: newPickerIndex
    });
  },

  // 点击确定后触发
  onPickerChange(e) {
    const { value } = e.detail; // value: 确定后各列选中项下标的数组，如 [0, 1]
    const [deptIndex, userIndex] = value;

    // 根据最终下标获取选中的部门和人员对象
    const selectedDeptObj = this.data.pickerArray[0][deptIndex];
    // 注意：此时第二列数据可能已经被更新，直接用value中的下标取
    const selectedUserObj = this.data.pickerArray[1][userIndex];

    this.setData({
      selectedDept: selectedDeptObj.name,
      selectedUser: selectedUserObj.name,
      pickerIndex: value // 更新选中下标，确保页面显示与选择一致
    });

    // 可以在这里将选择的部门ID和人员ID用于后续业务逻辑
    console.log('选中的部门ID:', selectedDeptObj.id, '人员ID:', selectedUserObj.id);
  }

})